#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "header.h"


/*
  Définitin des fonctions permettant le décryptage de chaîne de char simple (sans majuscule, sans ponctuation,
  sans caractères spéciaux) à partir d'une clé connue.
  Le cryptage "simple" consiste à décaler tous les caractères en fonction du caractère extrait de la clé
  (dès qu'on est arrivé au bout de celle-ci, on revient au début)

  Ex : si l'on a un caractère codé par 'c' avec une clé donc on extrait un 'j', le décodage retourne 'l'
 */


/*
  char c : caractère à décrypter, c est un caractère compris entre 'a' et 'z' inclus.
  char b : clé. Défini le nombre de case à décaler. 
  

  Résultat : le caractère 'c' codé par la clé b
 */




char DBKC(char c, char b)
{
  char aux;
  int k = b-97;
  if (c-k <97)
    {
      aux =(char) 122-(c-(b-97));//(((c+k)%122)+96);  //Si dépassement, on doit ajouter 96 pour commencer à 'a'
    }
  else
    {
      aux = (char)c-k;
    }
  return aux;

}




char* DBK(char* w, char* k)
{
        char* result = (char*) malloc(strlen(w)*sizeof(char));
        int i,j=0;
        int key_size = strlen(k);
        for (i = 0; i < strlen(w); i++)
        {
            if (j==key_size)
            {
                j=0;
            }
            result[i]=DBKC(w[i],k[j]);
            j++;
        }
return result;
}
